package june.chatbase;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.text.Layout;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class ChatBaseAdapter extends BaseAdapter{
	
	private Context context;
	private ArrayList<ChatItem> arr_chatItem;
	
	/**
	 * 쳇베이스어답터의 생성자.
	 * 호출된위치의 콘텍스트와 어레이 아이템을 받는다.
	 * 널포인트를 피하기위해 현재 만들어진 자료가 없더라도 어레이쳇아이템을
	 * 생성하여 함께 넣어주자.
	 * @param context
	 * @param arr_chatItem
	 */
	public ChatBaseAdapter(Context context, ArrayList<ChatItem> arr_chatItem){
		this.context = context;
		this.arr_chatItem = arr_chatItem;
	}
	
	/**
	 * 생성자와는 별도로 아이템을 교체한다.
	 * 즉 이놈은 아예 통짜 갈아끼기.
	 * @param arr_chatItem
	 */
	public void changeItem(ArrayList<ChatItem> arr_chatItem){
		this.arr_chatItem = arr_chatItem;
		notifyDataSetChanged();
	}
	
	/**
	 * 하나의 쳇아이템만을 받아서 기존 어레이에 추가한다.
	 * @param chatItem
	 */
	public void addChatItem(ChatItem chatItem){
		arr_chatItem.add(chatItem);
		Log.d("june", "배열사이즈 : " + arr_chatItem.size());
		notifyDataSetChanged();
	}
	
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return arr_chatItem.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return arr_chatItem.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		
		int resource; 
		
		//사용 리소스 분기. 아이템에 저장된 방향으로.
		//비교될 기준은 Gravity클래스의 상수로지정.
		if(arr_chatItem.get(position).gravity == Gravity.LEFT){
			resource = R.layout.itma_left;
		} 
		else {
			resource = R.layout.itma_right;
		}
		
		//xml확장. 사용할 row제작.
		LayoutInflater inflater = ((Activity)context).getLayoutInflater();
		View row = inflater.inflate(resource, null);
		
		//row에 해당된 텍뷰 파인드. 단, 여기서 찾은 아이디들은 left, right에 동일하게 적용되어야 한다.
		TextView tv1 = (TextView)row.findViewById(R.id.item_tv1);
		TextView tv2 = (TextView)row.findViewById(R.id.item_tv2);
		
		Log.d("june", "포지션별 텍스트(" + position + ") : " + arr_chatItem.get(position).ChatText_1 + ", " + arr_chatItem.get(position).ChatText_2);
		
		//아이템에 담긴 텍스트 셋팅.
		tv1.setText(arr_chatItem.get(position).ChatText_1);
		tv2.setText(arr_chatItem.get(position).ChatText_2);
		
		return row;
	}

}
